package br.com.rise.leilao.financeiro

/********
 * @author Leonardo
 */

import grails.test.*
import br.com.rise.leilao.access.Usuario

class CartaoCreditoTests extends GrailsUnitTestCase {
    protected void setUp() {
        super.setUp()
    }

    protected void tearDown() {
        super.tearDown()
    }
	//caminho feliz
	void testConstraintsSucesso() {
		
		mockDomain CartaoCredito, []
		def user = new Usuario()
		def cc = new CartaoCredito(usuarios: user, bandeira: "Visa", numero: "4071692746562891", validade: "12/03/2012", codigoSeguranca: "123" )
		assertTrue cc.validate()
	}
	
	//testando a constraint nullable do bandeira
	void testBandeiraConstraintsNullable() {
		
		mockDomain CartaoCredito, []
		def user = new Usuario()
		def cc = new CartaoCredito(usuarios: user,numero: "4071692746562891", validade: "12/03/2012", codigoSeguranca: "123" )
		assertFalse cc.validate()
		assertEquals "nullable", cc.errors['bandeira']
	}
	
	//testando a constraint nullable do numero
	void testNumeroConstraintsNullable() {
		
		mockDomain CartaoCredito, []
		def user = new Usuario()
		def cc = new CartaoCredito(usuarios: user,bandeira: "Visa", validade: "12/03/2012", codigoSeguranca: "123" )
		assertFalse cc.validate()
		assertEquals "nullable", cc.errors['numero']
	}
	
	//testando a constraint nullable da validade
	void testValidadeConstraintsNullable() {
		
		mockDomain CartaoCredito, []
		def user = new Usuario()
		def cc = new CartaoCredito(usuarios: user,bandeira: "Visa", numero: "4071692746562891", codigoSeguranca: "123" )
		assertFalse cc.validate()
		assertEquals "nullable", cc.errors['validade']
	}
	
	//testando a constraint nullable da validade
	void testCodSegurancaConstraintsNullable() {
		
		mockDomain CartaoCredito, []
		def user = new Usuario()
		def cc = new CartaoCredito(usuarios: user,bandeira: "Visa", numero: "4071692746562891", validade: "12/03/2012")
		assertFalse cc.validate()
		assertEquals "nullable", cc.errors['codigoSeguranca']
	}
	
	//testando a constraint nullable da validade
	void testUsuariosConstraintsNullable() {
		
		mockDomain CartaoCredito, []
		def user = new Usuario()
		def cc = new CartaoCredito(usuarios: user,bandeira: "Visa", numero: "4071692746562891", validade: "12/03/2012")
		assertFalse cc.validate()
		assertEquals "nullable", cc.errors['codigoSeguranca']
	}
	
	//testando a constraint blank do campo bandeira
	void testNomeConstraintsBlank() {

		mockDomain CartaoCredito, []
		def user = new Usuario()
		def cc = new CartaoCredito(usuarios: user,bandeira: "", numero: "4071692746562891", validade: "12/03/2012", codigoSeguranca: "123" )
		assertFalse cc.validate()
		assertEquals "blank", cc.errors['bandeira']
	}
	
	//testando a constraint blank do campo numero
	void testNumeroConstraintsBlank() {

		mockDomain CartaoCredito, []
		def user = new Usuario()
		def cc = new CartaoCredito(usuarios: user, bandeira: "Visa", numero: "", validade: "12/03/2012", codigoSeguranca: "123" )
		assertFalse cc.validate()
		assertEquals "blank", cc.errors['numero']
	}
	
	//testando a constraint blank do campo validade
	void testCodSegurancaConstraintsBlank() {

		mockDomain CartaoCredito, []
		def user = new Usuario()
		def cc = new CartaoCredito(usuarios: user, bandeira: "Visa", numero: "4071692746562891", validade: "12/03/2012", codigoSeguranca: "" )
		assertFalse cc.validate()
		assertEquals "blank", cc.errors['codigoSeguranca']
	}
	
	//teste toString bandeira
	void testToString() {
		def b = new CartaoCredito(bandeira: "Visa")
		assertToString b, "Visa"
	}
	
}
